home *** CD-ROM | disk | FTP | other *** search
/ Greenhouse Effect Detection Expriment / NASA Greenhouse Effect Detection Expriment 1992 - Disc 2.iso / software / dos / cdf22pc / src / tools / generic.c < prev    next >
Encoding:
C/C++ Source or Header  |  1992-02-26  |  2.5 KB  |  109 lines

  1. /******************************************************************************
  2. *
  3. *  NSSDC/CDF                        GENERIC.C
  4. *
  5. *  Version 2.0, 27-Feb-92, ST Systems (STX)
  6. *
  7. *  Modification history:
  8. *
  9. *   V1.0  24-Jan-91, D Grogan/H Leckner       Original version (for CDF V2.0).
  10. *   V2.0  27-Feb-92, J Love           Modified for IBM-PC port.  CDF V2.2.
  11. *             H Leckner
  12. *
  13. ******************************************************************************/
  14.  
  15. #include <stdlib.h>
  16. #define GENERIC 1
  17. #include "wfl.h"
  18. #include "cdfdist.h"
  19. #include "cdfbrow.h"
  20.  
  21. #define CP (*c)
  22. #define GP (**c)
  23.  
  24.  
  25. void GENERIC_init (c, row, col)
  26.  
  27.     struct generic_struct    **c;
  28.     int   row, col;
  29. {
  30.  
  31.     long int    i;
  32.     *c = (struct generic_struct *) malloc(sizeof(struct generic_struct));
  33.  
  34.     if ( (row > 0) && (col > 0) )
  35.        WFL_change_window_loc (&generic_inter, col, row);
  36.  
  37.     set_pointer ( (long *) &GP.window, (long) &generic_inter);
  38.  
  39.     GP.num_elements = GENERIC_MAX_ELEMENTS;
  40.  
  41.     for (i = 0 ; i < GP.num_elements ; i++)
  42.          {
  43.         set_pointer ((long *)&(GP.elements)[i], (long) &generic[i]);
  44.          }
  45. }
  46.  
  47. int GENERIC_read ( c, prompt, data_len, data_ptr, row, col )
  48.  
  49.     struct generic_struct    *c;
  50.     char            prompt[];
  51.     int            data_len;
  52.     char            data_ptr[];
  53.     int            row;
  54.     int            col;
  55. {
  56.     int            rcode;
  57.     int            data_type;
  58.     int            element_num;
  59.     int            prompt_len;
  60.     int            cent_x;
  61.     int            cent_y;
  62.  
  63.     prompt_len = strlen(prompt);
  64.     WFL_change_window_width ((struct window_struct *) CP.window,
  65.                   prompt_len+data_len);
  66.     cent_x = SCREEN_WIDTH/2 - (prompt_len+data_len)/2;
  67.     cent_y = SCREEN_HEIGHT/2;
  68.  
  69.     if ( (row == 0) && (col == 0) )
  70.        WFL_change_window_loc ((struct window_struct *) CP.window, cent_x, cent_y);
  71.  
  72.     WFL_create_window ((struct window_struct *) CP.window);
  73.     WFL_begin_screen_update ();
  74.     WFL_draw_window ((struct window_struct *) CP.window);
  75.     WFL_generic_form ((struct window_struct *) CP.window,
  76.               (struct form_element_struct **) CP.elements,
  77.               prompt, data_len);
  78.     WFL_end_screen_update ();
  79.  
  80.  
  81.     element_num = 1;
  82.     data_type = DT_STRING;
  83.     WFL_read_element((struct window_struct *) CP.window,
  84.              (struct form_element_struct **) CP.elements,
  85.              (int *) data_ptr, data_type, element_num, &rcode);
  86.  
  87.     WFL_delete_window ((struct window_struct *) CP.window);
  88.     return (rcode);
  89. }
  90.  
  91. int GENERIC_form ( prompt_ptr, data_ptr, data_len, row, col )
  92.  
  93.     char            *prompt_ptr;
  94.     char            *data_ptr;
  95.     int            data_len;
  96.     int             row;
  97.     int            col;
  98.  
  99. {
  100.     struct generic_struct    *generic_ptr;
  101.     int                     rcode;
  102.  
  103.     GENERIC_init (&generic_ptr, row, col);
  104.     rcode = GENERIC_read (generic_ptr, prompt_ptr,
  105.                   data_len, data_ptr, row, col);
  106.     free(generic_ptr);
  107.     return (rcode);
  108. }
  109.